package cn.jesin.css.handler;

import org.mybatis.spring.MyBatisSystemException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.sql.SQLSyntaxErrorException;

/**
 * @author 谷汉斌
 * @description RestControllerAdvice，这个注解用于标识当前类为REST风格对应的异常处理器
 * @createTime 2024/7/22 下午3:16
 */
//@RestControllerAdvice
public class MyExceptionHandler {

    /**
     * 定义执行SQL的异常处理方法
     */
    @ExceptionHandler(SQLSyntaxErrorException.class)
    public void handleSqlSyntaxError(SQLSyntaxErrorException ex) {
        // 打印异常信息，便于调试
        System.err.println("SQL 执行出错: " + ex.getMessage());
    }

    /**
     * 定义mybatis系统异常处理方法
     */
    @ExceptionHandler(MyBatisSystemException.class)
    public void handleException(MyBatisSystemException ex) {
        // 打印异常信息，便于调试
        System.out.println("mybatis 出错: " + ex.getStackTrace());
    }


    /**
     * 定义数组越界异常处理方法
     */
    @ExceptionHandler(IndexOutOfBoundsException.class)
    public void handleException(IndexOutOfBoundsException ex) {
        // 打印异常信息，便于调试
        System.out.println("数组访问越界: " + ex.getMessage());
    }

    /**
     * 定义空指针异常处理方法
     */
    @ExceptionHandler(NullPointerException.class)
    public void handleException(NullPointerException ex) {
        // 打印异常信息，便于调试
        System.out.println("空指针异常: " + ex.getMessage());
    }

    /**
     * 定义未知异常处理方法
     */
    @ExceptionHandler(Exception.class)
    public void handleException(Exception ex) {
        // 打印异常信息，便于调试
        System.out.println("未知异常: " + ex.getMessage());
    }

}